﻿//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
#if DESKTOPCLR
namespace CuteAnt.ServiceModel.Diagnostics
{
  using System.Diagnostics;

  class DiagnosticTraceSource : PiiTraceSource
  {
    const string PropagateActivityValue = "propagateActivity";
    internal DiagnosticTraceSource(string name, string eventSourceName)
        : base(name, eventSourceName)
    {
    }

    internal DiagnosticTraceSource(string name, string eventSourceName, SourceLevels level)
        : base(name, eventSourceName, level)
    {
    }

    protected override string[] GetSupportedAttributes()
    {
      string[] baseAttributes = base.GetSupportedAttributes();
      string[] supportedAttributes = new string[baseAttributes.Length + 1];
      for (int i = 0; i < baseAttributes.Length; i++)
      {
        supportedAttributes[i] = baseAttributes[i];
      }
      supportedAttributes[baseAttributes.Length] = DiagnosticTraceSource.PropagateActivityValue;

      return supportedAttributes;
    }

    internal bool PropagateActivity
    {
      get
      {
        bool retval = false;
        string attributeValue = this.Attributes[DiagnosticTraceSource.PropagateActivityValue];
        if (!string.IsNullOrEmpty(attributeValue))
        {
          if (!bool.TryParse(attributeValue, out retval))
          {
            retval = false;
          }
        }
        return retval;
      }
      set
      {
        this.Attributes[DiagnosticTraceSource.PropagateActivityValue] = value.ToString();
      }
    }
  }
}
#endif